home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Programming / BlitzBasic / TRITONBLITZ / BlitzLibs / Libdocs+demos / DBaseLib / db_blitzbook.asc < prev    next >
Encoding:
Text File  |  1998-06-24  |  5.8 KB  |  280 lines

  1. ;
  2. ; Exmaple program for dbaselib
  3. ;
  4.  
  5. WBStartup
  6.  
  7. #WIN_ADDR=1
  8. #DB_ADDR=1
  9.  
  10. #Name=1
  11. #mAddr1=2
  12. #mAddr2=3
  13. #mAddr3=4
  14. #mAddr4=5
  15. #Tel=6
  16. #gFirst=7
  17. #gPrev=8
  18. #gNext=9
  19. #gLast=10
  20. #Clear=11
  21. #Store=12
  22. #Delete=13
  23. #Search=14
  24. #SNext=15
  25.  
  26. NEWTYPE.abook
  27.   name.b[64]
  28.   paddr1.b[32]
  29.   paddr2.b[32]
  30.   paddr3.b[32]
  31.   paddr4.b[32]
  32.   tel.b[32]
  33. End NEWTYPE
  34.  
  35. DEFTYPE.abook REC
  36.  
  37. USEPATH REC
  38.  
  39.  
  40. Statement addr_enable{}
  41.     GTEnable #WIN_ADDR,#gFirst
  42.     GTEnable #WIN_ADDR,#gLast
  43.     GTEnable #WIN_ADDR,#Delete
  44.     GTEnable #WIN_ADDR,#Search
  45.     GTEnable #WIN_ADDR,#SNext
  46. End Statement
  47.  
  48. Statement addr_disable{}
  49.     GTDisable #WIN_ADDR,#gFirst
  50.     GTDisable #WIN_ADDR,#gLast
  51.     GTDisable #WIN_ADDR,#gNext
  52.     GTDisable #WIN_ADDR,#gPrev
  53.     GTDisable #WIN_ADDR,#Delete
  54.     GTDisable #WIN_ADDR,#Search
  55.     GTDisable #WIN_ADDR,#SNext
  56. End Statement
  57.  
  58. Statement addr_check{}
  59.   If DBrecs(#DB_ADDR)
  60.     addr_enable{}
  61.  
  62.     If DBisnext(#DB_ADDR)
  63.       GTEnable #WIN_ADDR,#gNext
  64.     Else
  65.       GTDisable #WIN_ADDR,#gNext
  66.     End If
  67.  
  68.     If DBisprev(#DB_ADDR)
  69.       GTEnable #WIN_ADDR,#gPrev
  70.     Else
  71.       GTDisable #WIN_ADDR,#gPrev
  72.     End If
  73.  
  74.   Else
  75.     addr_disable{}
  76.   End If
  77.  
  78.   For u=1 To 15
  79.     Redraw #WIN_ADDR,u
  80.   Next u
  81.  
  82. End Statement
  83.  
  84. Statement addr_show{}
  85. SHARED REC
  86.  
  87.   addr_check{}
  88.  
  89.   GTSetString #WIN_ADDR,#Name,FlsToStr$(\name,64)
  90.   GTSetString #WIN_ADDR,#mAddr1,FlsToStr$(\paddr1,32)
  91.   GTSetString #WIN_ADDR,#mAddr2,FlsToStr$(\paddr2,32)
  92.   GTSetString #WIN_ADDR,#mAddr3,FlsToStr$(\paddr3,32)
  93.   GTSetString #WIN_ADDR,#mAddr4,FlsToStr$(\paddr4,32)
  94.   GTSetString #WIN_ADDR,#Tel,FlsToStr$(\tel,32)
  95. End Statement
  96.  
  97. Statement addr_clear{}
  98. SHARED REC,ADDR_RECM,ADDR_RECC
  99.   StrToFls "",REC,SizeOf.abook
  100.   ADDR_RECM=0:ADDR_RECC=1:addr_show{}
  101.   GTDisable #WIN_ADDR,#Delete
  102.   Redraw #WIN_ADDR,#Delete
  103.   ActivateString #WIN_ADDR,#Name
  104. End Statement
  105.  
  106. Statement openwindow{}
  107.   WbToScreen #WIN_ADDR
  108.   WBenchToFront_
  109.   GTString #WIN_ADDR,#Name,   9, 4,200,14,"Name",2,64
  110.   GTString #WIN_ADDR,#mAddr1, 9,18,200,14,"Address",2,32
  111.   GTString #WIN_ADDR,#mAddr2, 9,32,200,14,"",2,32
  112.   GTString #WIN_ADDR,#mAddr3, 9,46,200,14,"",2,32
  113.   GTString #WIN_ADDR,#mAddr4, 9,60,200,14,"",2,32
  114.   GTString #WIN_ADDR,#Tel,    9,74,200,14,"Telephone",2,32
  115.   GTButton #WIN_ADDR,#gFirst, 9,92, 60,14,"|<",0
  116.   GTButton #WIN_ADDR,#gPrev, 79,92, 60,14,"<<",0
  117.   GTButton #WIN_ADDR,#gNext,149,92, 60,14,">>",0
  118.   GTButton #WIN_ADDR,#gLast,219,92, 60,14,">|",0
  119.   GTButton #WIN_ADDR,#Clear,  9,108, 80,14,"New",0
  120.   GTButton #WIN_ADDR,#Store,104,108, 80,14,"Store",0
  121.   GTButton #WIN_ADDR,#Delete,199,108,80,14,"Delete",0
  122.   GTString #WIN_ADDR,#Search,9,140,200,14,"Search",4,32
  123.   GTButton #WIN_ADDR,#SNext,219,140,60,14,"Next",0
  124.  
  125.   Window #WIN_ADDR,0,10,300,180,$100E,"Address Book (DBlib Demo)",0,1
  126.  
  127.   AttachGTList #WIN_ADDR,#WIN_ADDR
  128. End Statement
  129.  
  130. .main
  131. ; initialise/load database
  132.   ok=DBLoad(#DB_ADDR,"Address.Book")
  133.   If ok=0 Then ok=DBInit(#DB_ADDR,1,1,REC,64)
  134.   If ok
  135.     ; open up the window on workbench
  136.     openwindow{}
  137.     ; check how many record are in the file (0=empty)
  138.     If DBrecs(#DB_ADDR)>0
  139.       ; set pointer to first record and read date
  140.       DBfirst #DB_ADDR
  141.       DBget #DB_ADDR,REC
  142.       ADDR_RECC=0
  143.     Else
  144.       ; empty database, lets have a clear record then
  145.       addr_clear{}
  146.     End If
  147.     addr_show{}:ADDR_RECM=0
  148.   End If
  149.  
  150. ev.l=0
  151. While (ev.l<>$200)
  152.   ev.l=WaitEvent
  153.   If ev.l=$40
  154.  
  155.     Select GadgetHit
  156.  
  157.       Case #Clear
  158.         addr_clear{}
  159.  
  160.       Case #Name
  161.         a$=GTGetString(#WIN_ADDR,#Name)
  162.  
  163.         If a$<>FlsToStr$(\name,64)
  164.           ADDR_RECM=1
  165.           StrToFls a$,\name,64
  166.         End If
  167.  
  168.       Case #Tel
  169.         a$=GTGetString(#WIN_ADDR,#Tel)
  170.         If a$<>FlsToStr$(\tel,32)
  171.           ADDR_RECM=1
  172.           StrToFls a$,\tel,32
  173.         End If
  174.  
  175.       Case #mAddr1
  176.         a$=GTGetString(#WIN_ADDR,#mAddr1)
  177.         If a$<>FlsToStr$(\paddr1,32)
  178.           ADDR_RECM=1
  179.           StrToFls a$,\paddr1,32
  180.         End If
  181.  
  182.       Case #mAddr2
  183.         a$=GTGetString(#WIN_ADDR,#mAddr2)
  184.         If a$<>FlsToStr$(\paddr2,32)
  185.           ADDR_RECM=1
  186.           StrToFls a$,\paddr2,32
  187.         End If
  188.  
  189.       Case #mAddr3
  190.         a$=GTGetString(#WIN_ADDR,#mAddr3)
  191.         If a$<>FlsToStr$(\paddr3,32)
  192.           ADDR_RECM=1
  193.           StrToFls a$,\paddr3,32
  194.         End If
  195.  
  196.       Case #mAddr4
  197.         a$=GTGetString(#WIN_ADDR,#mAddr4)
  198.         If a$<>FlsToStr$(\paddr4,32)
  199.           ADDR_RECM=1
  200.           StrToFls a$,\paddr4,32
  201.         End If
  202.  
  203.       Case #Store
  204.         DBCasesense Off
  205.         If ADDR_RECM=1
  206.           If ADDR_RECC=1
  207.             ; if record was cleared add the entry
  208.             DBadd #DB_ADDR,REC
  209.           Else
  210.             ; if record has been modified, update it
  211.             DBupdate #DB_ADDR,REC
  212.           End If
  213.         End If
  214.         ADDR_RECC=0:ADDR_RECM=0
  215.         addr_show{}
  216.         DBCasesense On
  217.  
  218.  
  219.       Case #gFirst
  220.         ADDR_RECC=0:ADDR_RECM=0
  221.         DBfirst #DB_ADDR
  222.         DBget #DB_ADDR,REC:addr_show{}
  223.  
  224.       Case #gLast
  225.         ADDR_RECC=0:ADDR_RECM=0
  226.         DBlast #DB_ADDR
  227.         DBget #DB_ADDR,REC:addr_show{}
  228.  
  229.       Case #gNext
  230.         ADDR_RECC=0:ADDR_RECM=0
  231.         DBnext #DB_ADDR
  232.         DBget #DB_ADDR,REC:addr_show{}
  233.  
  234.       Case #gPrev
  235.         ADDR_RECC=0:ADDR_RECM=0
  236.         DBprev #DB_ADDR
  237.         DBget #DB_ADDR,REC:addr_show{}
  238.  
  239.       Case #Delete
  240.         ADDR_RECC=0:ADDR_RECM=0
  241.         DBdelete #DB_ADDR
  242.         If DBrecs(#DB_ADDR)=0
  243.           addr_clear{}
  244.         Else
  245.           DBget #DB_ADDR,REC
  246.         End If
  247.         addr_show{}
  248.  
  249.       Case #Search
  250.         DBCasesense Off
  251.  
  252.         a$=GTGetString(#WIN_ADDR,#Search)
  253.         ok=DBfind(#DB_ADDR,a$)
  254.         If ok
  255.           DBget #DB_ADDR,REC
  256.           addr_show{}
  257.         End If
  258.  
  259.         DBCasesense On
  260.  
  261.       Case #SNext
  262.         DBCasesense Off
  263.         a$=GTGetString(#WIN_ADDR,#Search)
  264.         ok=DBfindnext(#DB_ADDR)
  265.         If ok
  266.           DBget #DB_ADDR,REC
  267.           addr_show{}
  268.         End If
  269.  
  270.         DBCasesense On
  271.  
  272.     End Select
  273.  
  274.   End If
  275. Wend
  276.  
  277. DBSave #DB_ADDR,"Address.Book"
  278. CloseWindow #WIN_ADDR
  279. End
  280.